package ifrn.agendaweb.servico;

import ifrn.agendaweb.jpa.GrupoJPA;
import ifrn.agendaweb.modelo.Grupo;
import ifrn.agendaweb.modelo.Usuario;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class GrupoServico {

	private GrupoJPA grupoPersistencia;

	@Autowired
	public void setServicoGrupo(GrupoJPA grupoPersistencia) {
		this.grupoPersistencia = grupoPersistencia;
	}
	

	
	public void criar(Grupo grupo) throws ServicoException {
		List<Grupo> grupos = grupoPersistencia.recuperarPorNome(grupo);
		
		if (grupos.isEmpty()) {
			grupoPersistencia.criar(grupo);
		} else {
			throw new ServicoException("O grupo não foi cadastrado pois já possui um outro com o mesmo nome.");
		}

	}
	
	
	public void atualizar(Grupo grupo) throws ServicoException {
		
		List<Grupo> grupos = grupoPersistencia.recuperarPorNome(grupo);
		
		if (grupos.isEmpty()) {
			grupoPersistencia.atualizar(grupo);
		} else {
			throw new ServicoException("O grupo não foi alterado pois já possui um outro com o mesmo nome.");
		}
		
	}
	

	public Grupo recuperar(Grupo grupo) throws ServicoException{
		try {
			return grupoPersistencia.recuperarPorId(grupo);
		} catch (Exception e) {
			e.printStackTrace();
			throw new ServicoException(e.getMessage());
		}
	}
	
	
	public List<Grupo> recuperarTodos(Usuario usuario) throws ServicoException{
		try {
			return grupoPersistencia.recuperarPorUsuario(usuario);
		} catch (Exception e) {
			throw new ServicoException(e.getMessage());
		}
	}


	public List<Grupo> recuperarPorNomeDescrica(Grupo grupo) throws ServicoException {
		try {
			return grupoPersistencia.recuperarPorNomeDescricao(grupo);
		} catch (Exception e) {
			e.printStackTrace();
			throw new ServicoException(e.getMessage());
		}
	}



	public void deletar(Grupo grupo) throws ServicoException {
		try {
			grupoPersistencia.deletar(grupo);
		} catch (Exception e) {
			e.printStackTrace();
			throw new ServicoException(e.getMessage());
		}
	}
	

}
